การติดตั้ง PostgreSQL ใน Amazon Linux 2 บน EC2 และการใช้งานเบื้องต้น
POP จากบริษัท Classmethod (Thailand) ครับ
ครั้งนี้ผมจะมาแนะนำการติดตั้ง PostgreSQL10 ใน Amazon Linux 2 และการใช้งานเบื้องต้น โดยการ Run Command ตามขั้นตอนที่ได้เขียนลงในบทความนี้ ! ไปดูกันเลยครับ
สิ่งที่ต้องมี
- มี EC2 Instance และเชื่อมต่อกับ Server Amazon Linux 2 แล้ว
ผู้ที่ต้องการเริ่มต้นระบบ EC2 Instance สามารถดูตัวอย่างได้ที่ลิงก์บทความด้านล่างนี้
PostgreSQL คืออะไร?
PostgreSQL เป็นระบบฐานข้อมูลเชิงสัมพันธ์แบบโอเพ่นซอร์สที่ทรงพลังพร้อมการพัฒนาอย่างต่อเนื่องมากกว่า 30 ปี ซึ่งได้รับชื่อเสียงอย่างมากในด้านความน่าเชื่อถือ ความทนทานของฟีเจอร์ และประสิทธิภาพ
ขั้นตอน
ขั้นตอนการติดตั้งและใช้งาน PostgreSQL ในตัวอย่างนี้ จะทำการ Run command ใน Terminal PuTTY ทั้งหมด
ตั้งค่าเริ่มต้น Amazon Linux 2
เข้าใช้งานสิทธิ์ root
sudo su -
อัปเดตเซิร์ฟเวอร์ให้เป็นปัจจุบัน
yum update -y
ติดตั้ง PostgreSQL10
ติดตั้ง PostgreSQL10 (เราสามารถติดตั้งเวอร์ชันที่เราต้องการได้)
amazon-linux-extras install postgresql10 -y
รันคำสั่งนี้เพื่อติดตั้งเซิร์ฟเวอร์ postgresql
yum install postgresql postgresql-server -y
สร้างไฟล์สถานะเริ่มต้น DB ใน PostgreSQL
postgresql-setup initdb
Output (example)
เมื่อรันคำสั่งนี้แล้ว ระบบจะสร้างโฟลเดอร์'/var/lib/pgsql/data'
ขึ้นมาเป็นโฟลเดอร์เวอร์ชันสำหรับใส่ฐานข้อมูล
TERMINAL (PuTTY)
[root@ip-172-31-29-138 ~]# postgresql-setup initdb
WARNING: using obsoleted argument syntax, try --help
WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql
* Initializing database in '/var/lib/pgsql/data'
* Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
[root@ip-172-31-29-138 ~]#
เริ่มต้นระบบ
เริ่มต้นระบบ PostgreSQL
systemctl start postgresql
เปิดการใช้งาน PostgreSQL เมื่อเริ่มต้น OS
systemctl enable postgresql
เชื่อมต่อและ Login
เชื่อมต่อ postgres
su - postgres
Output (example)
ถ้าเชื่อมต่อได้แล้วจะแสดงเป็น-bash-4.2$
TERMINAL (PuTTY)
[root@ip-172-31-29-138 ~]# su - postgres
-bash-4.2$
เข้าใช้งาน psql
psql
Output (example)
ถ้าเข้าใช้งานได้แล้วจะแสดงเป็นpostgres=#
TERMINAL (PuTTY)
-bash-4.2$ psql
psql (10.17)
Type "help" for help.
postgres=#
ตั้งค่า Password
ตั้งค่า Password ที่เราต้องการ (เปลี่ยน********
ให้เป็นรหัสของคุณ)
・postgres = Username
・password = รหัสผ่านของเรา
alter role postgres with password '********';
Output (example)
Password:P@ssW0rd
นี้เป็นแค่ตัวอย่าง
TERMINAL (PuTTY)
postgres=# alter role postgres with password 'P@ssw0rd';
ALTER ROLE
postgres=#
กลับมาที่ root
ออกจาก psql
\q
Output (example)
เมื่อออกจากpostgres
แล้วจะแสดงเป็น-bash-4.2$
TERMINAL (PuTTY)
postgres=# \q
-bash-4.2$
กลับมาที่ root
exit
Output (example)
เมื่อออกจากpsql
แล้วจะแสดงเป็น[root@ip-xxx-xx-xx-xxx ~]#
TERMINAL (PuTTY)
-bash-4.2$ exit
logout
[root@ip-172-31-29-138 ~]#
ตั้งค่าการเชื่อมต่อ PostgreSQL
vi /var/lib/pgsql/data/pg_hba.conf
Output (example)
เมื่อเข้ามาแล้ว ทำการแก้ไข METHOD ของ local, host, host ให้เป็นmd5
เหมือนกับตัวอย่างด้านล่างนี้
TERMINAL (PuTTY)
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
Restart PostgreSQL
systemctl restart postgresql
เชื่อมต่อจาก psql ด้วย ec2-user
psql -h localhost -U postgres
Output (example)
TERMINAL (PuTTY)
[root@ip-172-31-29-138 ~]# psql -h localhost -U postgres
Password for user postgres: [your-password] # ขณะพิมพ์ Password ตัวอักษรจะไม่แสดงให้เห็น
ทดสอบการใช้งาน
สร้าง Database (เปลี่ยนdatabase_name
ให้เป็นชื่อ Database ของคุณ เช่นtinnakorn
)
CREATE DATABASE database_name;
Output (example)
ตัวอย่างนี้ใช้ Database ชื่อว่าtinnakorn
TERMINAL (PuTTY)
postgres=# CREATE DATABASE tinnakorn;
CREATE DATABASE
postgres=#
แสดงรายการ database
\l
Output (example)
จะเห็นว่ามีชื่อ Database:tinnakorn
แสดงขึ้นมา
TERMINAL (PuTTY)
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
tinnakorn | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(4 rows)
postgres=#
เปลี่ยนการเชื่อมต่อ Database (เปลี่ยนdatabase_name
ให้เป็นชื่อ Database ของคุณที่สร้างจากขั้นตอนที่แล้ว เช่นtinnakorn
)
\c database_name
Output (example)
จะเห็นว่าเปลี่ยนเป็นtinnakorn=#
TERMINAL (PuTTY)
postgres=# \c tinnakorn
You are now connected to database "tinnakorn" as user "postgres".
tinnakorn=#
สร้าง Table (เปลี่ยนtable_name
ให้เป็นชื่อ Table ของคุณ)
create table table_name(id int, message varchar(255));
Output (example)
ตัวอย่างนี้ใช้ Table ชื่อว่าtest
TERMINAL (PuTTY)
tinnakorn=# create table test(id int, message varchar(255));
CREATE TABLE
tinnakorn=#
แสดงรายการ Table
\dt
Output (example)
จะเห็นว่ามีชื่อ Table:test
แสดงขึ้นมา
TERMINAL (PuTTY)
tinnakorn=# \dt
List of relations
Schema | Name | Type | Owner
--------+------+-------+----------
public | test | table | postgres
(1 row)
tinnakorn=#
Insert ข้อมูลลงใน Table
insert into test(column1, column2) values(value1, value2);
Output (example)
ข้อมูลของตัวอย่างนี้คือ [ column = (id, message) และ value = (1, 'test1') ]
TERMINAL (PuTTY)
tinnakorn=# insert into test(id, message) values(1, 'test1');
INSERT 0 1
tinnakorn=#
แสดงข้อมูลใน Table ทั้งหมด
select * from test;
Output (example)
TERMINAL (PuTTY)
tinnakorn=# select * from test;
id | message
----+---------
1 | test1
(1 row)
tinnakorn=#
ออกจาก psql
\q
สรุป
ผมได้ทำการติดตั้ง PostgreSQL ใน Amazon Linux 2 และได้ลองใช้งานดูแล้ว ก็รู้สึกว่าเป็นแอปพลิเคชันที่ดีมากๆ เพราะสามารถใช้คำสั่งของภาษา SQL ได้เกือบทั้งหมด จึงทำให้การจัดการ Database นั้นเป็นเรื่องง่าย
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ
POP จากบริษัท Classmethod (Thailand) ครับ !